//package com.mtk.launcher.service;
//
//import android.app.AlarmManager;
//import android.app.Service;
//import android.content.BroadcastReceiver;
//import android.content.Context;
//import android.content.Intent;
//import android.content.IntentFilter;
//import android.database.ContentObserver;
//import android.net.ConnectivityManager;
//import android.net.NetworkInfo;
//import android.os.AsyncTask;
//import android.os.Handler;
//import android.os.IBinder;
//import android.os.Looper;
//import android.os.Message;
//import android.provider.Settings;
//import android.text.TextUtils;
//import android.util.Log;
//
//import org.json.JSONException;
//import org.json.JSONObject;
//
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.util.Arrays;
//import java.util.List;
//
//public class UpdateTimeTaskService extends Service {
//
//    private static final String TAG = "UpdateTimeTaskService";
//    Handler mHandler;
//
//    private BroadcastReceiver networkChangeReceiver = new BroadcastReceiver() {
//        @Override
//        public void onReceive(Context context, Intent intent) {
//            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//            NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//
//            if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
//                Log.d(TAG, "internet connect ....");
//                if (checkAutoTimeZone()) getPublicIp();
//            }
//        }
//    };
//
//    @Override
//    public void onCreate() {
//        super.onCreate();
//        mHandler = new Handler(Looper.getMainLooper()) {
//            @Override
//            public void handleMessage(Message msg) {
//                super.handleMessage(msg);
//                getPublicIp();
//            }
//        };
//        registerTimeZoneSwitch();
//    }
//
//    @Override
//    public IBinder onBind(Intent intent) {
//        return null;
//    }
//
//    @Override
//    public int onStartCommand(Intent intent, int flags, int startId) {
//        IntentFilter filter = new IntentFilter();
//        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
//        registerReceiver(networkChangeReceiver, filter);
//        return START_STICKY;
//    }
//
//    /**
//     * 注册监听自动更新时区开关的变化,只有这个选项打开的时候,才会自动更新时区
//     */
//    private void registerTimeZoneSwitch() {
//        getContentResolver().registerContentObserver(
//            Settings.Global.getUriFor(Settings.Global.AUTO_TIME),
//            false,
//            observer
//        );
//    }
//
//    ContentObserver observer = new ContentObserver(new Handler()) {
//        @Override
//        public void onChange(boolean selfChange) {
//            if (checkAutoTimeZone()) {    // 监听到自动更新时区开关有打开,就去自动同步时区
//                getPublicIp();
//            }
//            super.onChange(selfChange);
//        }
//    };
//
//    /**
//     * 检查是否打开了自动更新时区
//     *
//     * @return true 开启了自动更新时区,false 关闭
//     */
//    private boolean checkAutoTimeZone() {
//        String autoTimeZone = Settings.Global.getString(
//            getContentResolver(),
//            Settings.Global.AUTO_TIME
//        );
//        Log.e(TAG, " auto timezone -- " + autoTimeZone.equals("1"));
//        return autoTimeZone.equals("1");
//    }
//
//    @Override
//    public void onDestroy() {
//        super.onDestroy();
//        getContentResolver().unregisterContentObserver(observer);
//        mHandler.removeCallbacksAndMessages(null);
//        unregisterReceiver(networkChangeReceiver);
//        Intent intent = new Intent(this, UpdateTimeTaskService.class);
//        startService(intent);
//    }
//
//    /**
//     * s 设置系统时区
//     *
//     * @param timeZone
//     */
//    private void setSystemTimeZone(String timeZone) {
//        if (!TextUtils.isEmpty(timeZone)) {
//            try {
//                AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//                alarmManager.setTimeZone(timeZone);
//                Log.d(TAG, "set system timezone end ,current timezone" + timeZone);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//
//        }
//    }
//
//    private static final List<String> API_URLS = Arrays.asList(
//        "https://ipinfo.io/json",
//        "http://ip-api.com/json",
//        "https://api.ipify.org?format=json"
//    );
//    private static final int MAX_RETRIES = 3;
//    private static final int CONNECTION_TIMEOUT = 10000;
//    private static final int READ_TIMEOUT = 10000;
//
//
//    private void getPublicIp() {
//        new HttpGetRequestTask().execute("");
//    }
//
//    class HttpGetRequestTask extends AsyncTask<String, Void, String> {
//        @Override
//        protected String doInBackground(String... urls) {
//            String ip = "";
//            for (String apiUrl : API_URLS) {
//                int attempt = 0;
//                boolean success = false;
//
//                while (attempt < MAX_RETRIES && !success) {
//                    HttpURLConnection connection = null;
//                    try {
//                        URL url = new URL(apiUrl);
//                        connection = (HttpURLConnection) url.openConnection();
//                        connection.setRequestMethod("GET");
//                        connection.setConnectTimeout(CONNECTION_TIMEOUT);
//                        connection.setReadTimeout(READ_TIMEOUT);
//
//                        int responseCode = connection.getResponseCode();
//                        if (responseCode == 200) {
//                            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
//                            StringBuilder response = new StringBuilder();
//                            String line;
//                            while ((line = reader.readLine()) != null) {
//                                response.append(line);
//                            }
//                            reader.close();
//
//                            try {
//                                JSONObject jsonObject = new JSONObject(response.toString());
//                                if (apiUrl.equals("http://ip-api.com/json")) {
//                                    ip = jsonObject.getString("query");
//                                } else {
//                                    ip = jsonObject.getString("ip");
//                                }
//                                success = true;
//                            } catch (JSONException e) {
//                                Log.e(TAG, "JSON parsing error", e);
//                            }
//                        } else {
//                            Log.e(TAG, "Request failed with response code: " + responseCode);
//                            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
//                            StringBuilder errorResponse = new StringBuilder();
//                            String line;
//                            while ((line = reader.readLine()) != null) {
//                                errorResponse.append(line);
//                            }
//                            reader.close();
//                            Log.e(TAG, "Error Response: " + errorResponse.toString());
//                        }
//                    } catch (IOException e) {
//                        Log.e(TAG, "Network error", e);
//                    } finally {
//                        if (connection != null) {
//                            connection.disconnect();
//                        }
//                    }
//                    attempt++;
//                }
//
//                if (success) {
//                    break;
//                }
//            }
//            return ip;
//        }
//
//        @Override
//        protected void onPostExecute(String response) {
//            // 在这里处理请求结果，更新 UI 界面或执行其他操作
//            if (!TextUtils.isEmpty(response)) {
//                new HttpGetRequestTasks().execute(response);
//            } else {
//                mHandler.sendEmptyMessageDelayed(10001, 1000 * 60 * 1);
//            }
//        }
//    }
//
//    class HttpGetRequestTasks extends AsyncTask<String, Void, String> {
//        @Override
//        protected String doInBackground(String... urls) {
//            String timez = "";
//            String geoUrl = "http://ip-api.com/json/" + urls[0];
//            try {
//                URL url = new URL(geoUrl);
//                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//                connection.setRequestMethod("GET");
//                int responseCode = connection.getResponseCode();
//                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
//                String line;
//                StringBuilder response = new StringBuilder();
//                while ((line = reader.readLine()) != null) {
//                    response.append(line);
//                }
//                reader.close();
//                if (responseCode == 200) {
//                    try {
//                        // 将返回的数据转换为 JSON 对象
//                        JSONObject jsonObject = new JSONObject(response.toString());
//                      /*  String city = jsonObject.getString("city");
//                        String region = jsonObject.getString("regionName");
//                        String country = jsonObject.getString("country");*/
//                        timez = jsonObject.getString("timezone");
//                    } catch (JSONException e) {
//                        e.printStackTrace();
//                    }
//                } else {
//                    //请求失败
//
//                }
//                connection.disconnect();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//            return timez;
//        }
//
//        @Override
//        protected void onPostExecute(String response) {
//            // 在这里处理请求结果，更新 UI 界面或执行其他操作
//            if (!TextUtils.isEmpty(response)) {
//                setSystemTimeZone(response);
//            } else {
//                mHandler.sendEmptyMessageDelayed(10001, 1000 * 60 * 1);
//            }
//        }
//    }
//}
//
//
//
//
//
//
//
//
